﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HSDc.DefinitionTransformer.Entity
{
    internal abstract class ProcessElement
    {
        private string _guid;

        public string Guid
        {
            get { return _guid; }
            set { _guid = value; }
        }

        private int _Id;

        public int Id
        {
            get { return _Id; }
            set { _Id = value; }
        }

        private int _parentId;

        public int ParentId
        {
            get { return _parentId; }
            set { _parentId = value; }
        }

        private string _name;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        private int _eofId;

        public int EofId
        {
            get { return _eofId; }
            set { _eofId = value; }
        }

        public ProcessElement() 
        {
            _guid = System.Guid.NewGuid().ToString();
        
        }

    }

    internal class Activity : ProcessElement
     {
        public  string ProcessElementClass
        {
            get { return "HSDc.RingleFlow.Kernel.ProcessActivity.HumanActivity"; }
        }

     }

    internal class Fork : ProcessElement
    {
        public string ProcessElementClass
        {
            get { return "HSDc.RingleFlow.Kernel.ProcessActivity.ForkActivity"; }
        }

    }

    internal class Join : ProcessElement
    {
        public string ProcessElementClass
        {
            get { return "HSDc.RingleFlow.Kernel.ProcessActivity.JoinActivity"; }
        }

    }

    internal class Decision : ProcessElement
     {
        public  string ProcessElementClass
        {
            get { return "HSDc.RingleFlow.Kernel.ProcessActivity.DecisionActivity"; }
        }

        private string _ruleClass;

        public string RuleClass
        {
            get { return _ruleClass; }
            set { _ruleClass = value; }
        }

     }

    internal class EndPoint : ProcessElement
     {
        public  string ProcessElementClass
        {
            get { return "HSDc.RingleFlow.Kernel.ProcessActivity.EndActivity"; }
        }

     }

    internal class StartPoint : ProcessElement
     {
     }

    internal class Swimlane : ProcessElement
     {
         private int _seqNo;
         //todo Arthur need modify diagramsupport make sure that 由左而右
         public int SeqNo
         {
             get { return _seqNo; }
             set { _seqNo = value; }
         }

         private string _ruleClass;

         public string RuleClass
         {
             get { return _ruleClass; }
             set { _ruleClass = value; }
         }

     }

    internal class Transition : ProcessElement
     {
         private int _targetId;

         public int TargetId
         {
             get { return _targetId; }
             set { _targetId = value; }
         }
         private int _sourceId;

         public int SourceId
         {
             get { return _sourceId; }
             set { _sourceId = value; }
         }

         private string _constraint;

         public string Constraint
         {
             get { return _constraint; }
             set { _constraint = value; }
         }

     }

}
